#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

#include "misc_init.h"

MODULE_AUTHOR("misc");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("misc");

void misc_do_cmd(ioctl_data_t *ioctl_data)
{
    const char *data = "hello from kernel\0";
    printk("%u %u %s\n", ioctl_data->cmd, ioctl_data->status, ioctl_data->data);
    ioctl_data->status = 2;
    ioctl_data->data_len = 10;
    memcpy(ioctl_data->data, data, strlen(data) + 1);
    return;
}

static int __init hello_init(void)
{
    misc_device_init(misc_do_cmd);
    return 0;
}

static void __exit hello_exit(void)
{
    misc_device_exit();
}

module_init(hello_init)
module_exit(hello_exit)
